<?php
require_once 'WxConfig.php';
require_once 'WxFunction.php';
require_once 'WxWebApi.php';

if (empty($_GET['callback_url']) && empty($_GET['code'])) exit;

// 判断是否第二次跳转回来
if (isset($_GET['code']) && isset($_GET['state'])){

    header('Content-type:text/html;charset=utf-8');

    if ( !isset($_GET['userinfo'])){
        // 只获取openid
        $result = WxWebApi::getAccessToken($_GET['code']);
        if (isset($result['openid'])){
            WxFunction::callback($_GET['state'], array('openid' => $result['openid']));
        } else {
            exit('异常：#1 - 获取accessToken失败');
        }
    } elseif ($_GET['userinfo'] == '1') {
        // 获取用户信息
        $result = WxWebApi::getAccessToken($_GET['code']);
        if (isset($result['openid']) && isset($result['access_token'])){
            $info = WxWebApi::getInfo($result['access_token'], $result['openid']);
            if (is_array($info)){
                WxFunction::callback($_GET['state'], $info);
            } else {
                exit('异常：#2 - 获取用户信息失败');
            }
        } else {
            exit('异常：#1 - 获取accessToken失败');
        }
    } else {
        exit('异常：#3 - scope错误');
    }

} else {
    $callback_url = urlencode($_GET['callback_url']);
    // 是否获取用户信息
    if (isset($_GET['userinfo']) && $_GET['userinfo'] == 1){
        $scope = 'snsapi_userinfo';
        $url = urlencode(WxConfig::BASEURL . 'auth.php?userinfo=1');
    } else {
        $scope = 'snsapi_base';
        $url = urlencode(WxConfig::BASEURL . 'auth.php');
    }
    WxWebApi::getCode($scope, $url, $callback_url);
}


